using System.ComponentModel.DataAnnotations;

namespace UwinEducation.Application.Dtos
{
    /// <summary>
    /// 教师DTO
    /// </summary>
    public class TeacherDto
    {
        /// <summary>
        /// 教师ID
        /// </summary>
        public Guid Id { get; set; }

        /// <summary>
        /// 工号
        /// </summary>
        public string TeacherNo { get; set; }

        /// <summary>
        /// 姓名
        /// </summary>
        public string Name { get; set; }

        /// <summary>
        /// 联系电话
        /// </summary>
        public string? Phone { get; set; }

        /// <summary>
        /// 电子邮箱
        /// </summary>
        public string? Email { get; set; }

        /// <summary>
        /// 备注
        /// </summary>
        public string? Remarks { get; set; }

        /// <summary>
        /// 创建时间
        /// </summary>
        public DateTime? CreatedAt { get; set; }

        public string? FirstName { get; set; }
        public string? Surname { get; set; }
        public string? ABN { get; set; }
        public string? TFN { get; set; }
        public string? HomeAddress { get; set; }
        public string? DOB { get; set; }
        public string? BackupTFN { get; set; }
        public string? BankDetail { get; set; }
        public string WWCCNumber { get; set; }
        public DateTime? ExpireDate { get; set; }

        public string? AccountNumber { get; set; }
        public decimal? OneToOnePrice { get; set; }
        public decimal? OneToTwoPrice { get; set; }
        public decimal? OneToThreePrice { get; set; }
        public decimal? OneToFourPrice { get; set; }
        public decimal? OneToFivePrice { get; set; }
        public decimal? OneToSixPrice { get; set; }

        /// <summary>
        /// 是否有档期
        /// </summary>
        public bool? HasAvailability { get; set; }
        /// <summary>
        /// 是否有排课
        /// </summary>
        public bool? HasSchedule { get; set; }
    }

    /// <summary>
    /// 创建教师DTO
    /// </summary>
    public class CreateTeacherDto
    {
        /// <summary>
        /// 工号
        /// </summary>
        [Required(ErrorMessage = "教师ID不能为空")]
        public string TeacherNo { get; set; }

        /// <summary>
        /// 姓名
        /// </summary>
        [Required(ErrorMessage = "教师ID不能为空")]
        public string Name { get; set; }

        /// <summary>
        /// 联系电话
        /// </summary>
        public string? Phone { get; set; }

        /// <summary>
        /// 电子邮箱
        /// </summary>
        public string? Email { get; set; }

        /// <summary>
        /// 备注
        /// </summary>
        public string? Remarks { get; set; }

        public string? FirstName { get; set; }
        public string? Surname { get; set; }
        public string? ABN { get; set; }
        public string? TFN { get; set; }
        public string? HomeAddress { get; set; }
        public string? DOB { get; set; }
        public string? BackupTFN { get; set; }
        public string? BankDetail { get; set; }
        public string? WWCCNumber { get; set; }
        public DateTime? ExpireDate { get; set; }

        public string? AccountNumber { get; set; }
        public decimal? OneToOnePrice { get; set; }
        public decimal? OneToTwoPrice { get; set; }
        public decimal? OneToThreePrice { get; set; }
        public decimal? OneToFourPrice { get; set; }
        public decimal? OneToFivePrice { get; set; }
        public decimal? OneToSixPrice { get; set; }
    }

    /// <summary>
    /// 更新教师DTO
    /// </summary>
    public class UpdateTeacherDto: CreateTeacherDto
    {
        /// <summary>
        /// 教师ID
        /// </summary>
        [Required(ErrorMessage = "教师ID不能为空")]
        public Guid Id { get; set; }
    }
}